package com.ruoyi.business.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mybatisflex.annotation.*;
import lombok.*;
import javax.validation.constraints.*;
import com.ruoyi.common.core.domain.BaseEntity;

import java.time.LocalDateTime;

/**
 * 数据实体 : 工单明细
 * @Author  : ljq
 * @Created : 2025/10/12
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@Table("t_project_detail")
public class ProjectDetail extends BaseEntity{


    @Id(keyType = KeyType.Auto)
    private Long id;

    /// 项目关联ID
    @Size(min = 0, max = 100, message = "项目长度不能超过100个字符")
    private String projectId;

    /// 用户关联ID
    @Size(min = 0, max = 100, message = "用户长度不能超过100个字符")
    private String userId;

    /// 银行卡关联ID
    @Size(min = 0, max = 100, message = "银行卡长度不能超过100个字符")
    private String bankCardId;

    /// 计划上班时间区间
    @Size(min = 0, max = 255, message = "计划上班时间区间长度不能超过255个字符")
    private String planWorkTimeRange;

    /// 工作日期
    @Size(min = 0, max = 20, message = "工作日期长度不能超过20个字符")
    private String workDate;

    /// 实际上班时间
    private String realWorkStartAt;

    /// 实际下班时间
    private String realWorkEndAt;

    /// 计划工时
    private Double planHour;

    /// 实际工时
    private Double realHour;

    /// 备注
    @Size(min = 0, max = 255, message = "备注长度不能超过255个字符")
    private String comment;

    /// 类型
    @Size(min = 0, max = 1, message = "类型长度不能超过1个字符")
    private String type;

    /// 状态# 1:进行中  2:审批中  3:被驳回  4:待收款 10:完成
    @Size(min = 0, max = 1, message = "状态# 1:进行中  2:审批中  3:被驳回  4:待收款 10:完成长度不能超过1个字符")
    private String status;

    /// 审批人
    @Size(min = 0, max = 100, message = "审批人长度不能超过100个字符")
    private String approvalBy;

    /// 审批人驳回原因
    @Size(min = 0, max = 100, message = "审批人驳回原因长度不能超过100个字符")
    private String approvalComment;

    /// 时薪
    private Double hourlyWage;

    /// 工种
    @Size(min = 0, max = 4, message = "工种长度不能超过4个字符")
    private String workType;

}